A programmable logic device (“PLD”) is typically designed to be usable in any of a wide range of possible applications. This allows the PLD to be manufactured in large quantities and sold to a large number of customers, each of whom may program it differently for a different use. Large volume production helps to reduce the unit cost of the PLD. Up to a point at least, the more possible uses the PLD can satisfy, the more customers will buy it for their individual needs and the larger the volume of production of the PLD can be, thereby lowering its unit cost further and further. Of course, too general a PLD may become excessively large and complex, thereby exerting cost-increasing pressure on the economics of the device. It is therefore necessary to strike a balance between too little and too much functionality in a PLD. The present invention relates to providing increased but not excessively increased functionality in a PLD.
PLDs are increasingly of interest for use in providing or at least supporting high speed communication. Among the communication protocols that it may be desirable to use PLDs with are several 8-bit/10-bit (“8B10B”) protocols such as those known as XAUI, InfiniBand, Gigabit Ethernet, and the like, and non-8B10B protocols such as Packet Over Sonet or POS-5 and the like. These various protocols are industry standards, and so they do not need to be described in full detail here. They will already be familiar to those skilled in the art, or they can be learned from the publications of the industry groups that sponsor and maintain them. (Although these industry-standard protocols serve as a point of reference for this invention, the invention is not limited to these standards and can also implement many non-standard variations of these protocols.)
Although all the protocols mentioned above are different from one another in at least some respects, all of the 8B10B protocols have some general characteristics in common with one another that are quite different from the non-8B10B protocols (hereinafter generally referred to for convenience as POS-5 protocols; although, again, more than true industry-standard POS-5 is included in the term “POS-5” as used herein). For example, the 8B10B protocols tend to make use of relatively small numbers of serial data channels in parallel (e.g., up to four data channels), but allow relatively large amounts of skew (relative signal transmission delay) among those channels. At least some of the 8B10B protocols may allow skew of as much as several byte transmission times among the various channels. The POS-5 protocols, on the other hand, tend to make use of larger numbers of serial data channels in parallel (e.g., up to 16 data channels), but allow only relatively small amounts of skew among those channels. For example, POS-5 protocols may only allow skew of up to three high-speed clock intervals (i.e., three serial data bit intervals) among the channels.
Other related differences of a fundamental nature between 8B10B and POS-5 protocols include the provision in POS-5 of a separate de-skew reference channel and a separate reference clock signal channel, neither of which are part of 8B10B protocols, at least in their industry-standard forms.
These relatively fundamental differences in characteristics between 8B10B and POS-5 protocols make it difficult to envision circuitry that can support them both, especially with respect to such functions as byte synchronization and channel alignment. Byte synchronization relates to finding the boundaries between successive bytes in incoming serial bit streams. Channel alignment relates to determining the amount of, and then eliminating or at least compensating for, skew among the incoming data channels. For example, the amount of skew allowed in POS-5 protocols is so small that it can generally be taken care of as part of byte synchronization. That tends not to be true for 8B10B protocols, which typically require separate channel alignment circuitry in addition to byte synchronization circuitry.
On the other hand, it would not be as economical or efficient on a PLD to provide completely or largely separate circuitry for interfacing with each of these two classes of protocols.